A portion of the disclosure of this patent document contains material to which the claim of copyright protection is made. The copyright owner has no objection to the facsimile reproduction by any person of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office file or records, but reserves all other rights whatsoever
1. Field of the Invention
The invention relates to the transference of data between two systems independent of the form in which the data is kept on the respective systems, and in particular to providing an efficient means of communicating data between systems and devices.
2. Description of the Related Art
The growth of computing-related devices has not been limited to personal computers or work stations. The number of personal computing devices has grown substantially in both type and format. Small, hand-held computers carry a multitude of contact, personal, document, and other information and are sophisticated enough to allow a user to fax, send e-mails, and communicate in other ways wirelessly. Even advanced cellular phones carry enough memory and processing power to store contact information, surf the web, and provide text messaging. Along with the growth in the sophistication of these devices, the need to transfer information between them has grown significantly as well.
With a multitude of different device types on the market, keeping information between the different devices synchronized has become increasingly problematic. For example, if an individual keeps a calendar of information on a personal computer in his or her office using a particular personal information manager application, the individual would generally like to have the same information available in a cellular phone, hand-held organizer, a notebook computer a home personal computer.
Until now, synchronization between both documents and personal information managers has occurred through direct connection between the devices, and generally directly between applications such as a personal information manager in one device and a personal information manager in another device or using an intermediary sync-mapping program.
One example of this is the prevalent use of the 3Com Palm(copyright) OSxe2x80x94based organizer, such as the 3Com Palm(copyright) series of computing devices, which uses its own calendaring system, yet lets users synchronize the data therein with a variety of different personal information manager software packages, such as Symantec""s ACT!(trademark), Microsoft""s Outlook(copyright), and other systems. In this example, an intermediary synchronization program such as Puma Technology, Inc.""s Intellisync(copyright) is required. Intellisync(copyright) is an application program which runs on both the hand-held device and the computer which stores the information data and maps data systems between non-uniform data records. In other cases, direct transfer between applications such as transfer between Microsoft""s Outlook(copyright) computer-based client and Microsoft""s Windows CE xe2x80x9cPocket Outlookxe2x80x9d application, is possible. Nevertheless, in both cases, synchronization occurs through direct connection between a personal computer and the personal computing device. While this connection is generally via a cable directly connecting, for example, Palm(copyright) device in a cradle to the personal computer, the connection may be wireless as well.
One component of these synchronization systems is that the synchronization process must be able to delineate between when changes are made to specific databases and must make a decision about whether to replace the changed field. Normally, this is measured by a change in one database, and no-change in a second database. In some cases, both databases will have changed between syncs. In this case, the sync operation must determine which of the two changes which has been made is to xe2x80x9cwinxe2x80x9d and replace the other during the sync. Generally, this determination of whether a conflict exists requires some means for letting the user resolve the conflict.
In a technical sense, synchronization in this manner is generally accomplished by the copying of full records between systems. At some level, a user is generally required to map data fields from one application to another and specify which data fields are assigned to which corresponding field in a different device. Less mapping is required where developers more robustly support various platforms of applications.
In many instances, the data to be synchronized is generally in the form of text data such as records of addresses, contact information, calendar information, notes and other types of contact information. In certain cases, data to be synchronized will be binary format of executable files or word processor-specific documents. In many cases where document synchronization is required, the synchronization routine simply determines whether or not the documents in question have changed, and uses a time-based representation to determine which of the two files is newer, and replaces the older file with the newer file to achieve synchronization, as long as the older of the two files was in fact not changed. This is the model used in the familiar xe2x80x9cBriefcasexe2x80x9d function in Microsoft Windows-based systems. If both files have changed, then the synchronization routine presents the option of conflict resolution to the user.
Such synchronization schemes are generally inefficient since they require full band-width of the document or binary file to be transferred via the synchronization link. In addition, at some level the synchronization programs require interaction by the user to map certain fields between different programs.
One of the difficulties in providing synchronization between different computing devices is that the applications and platforms are somewhat diverse.
Nevertheless, all synchronization programs generally require certain functions in order to be viable for widespread usage. In particular, synchronization programs must work with popular applications on various platforms. Sync applications must allow for conflicts resolution when changes are made to the same information on different devices between syncing events. They must provide synchronization for all types of formats of data, whether it be text data in the form of contacts, e-mails, calendar information, memos or other documents, or binary data in the form of documents or programs in particular types of formats.
In a broader sense, applications which efficiently synchronize data between disparate types of devices can provide advantages in applications beyond synchronizing individual, personal information between, for example, a personal information manager hardware device such as a Palm(copyright) computing device, and a personal computer. The same objectives which are prevalent in developing data transfer between personal information management (PIM) devices and desktop systems lend themselves to furthering applications requiring data transfer between other types of devices, on differing platforms. These objectives include speed, low bandwidth, accuracy, and platform independence.
For example, current e-mail systems use a system which is somewhat akin to the synchronization methods used for disparate devices in that an entire message or file is transferred as a whole between different systems. When a user replies to an e-mail, generally the entire text of the original message is returned to the sender, who now has two copies of the e-mail text he/she originally sent out. The same is true if an e-mail attachment is modified and returned. All of the text which is the same between both systems is essentially duplicated on the originator""s system.
The invention, roughly described, comprises a data package containing instructions for manipulating user data. The transactions represent changes to user data made on a first system which can be easily transmitted to a second system. In one aspect, the data package is useful in a synchronization system which maintains matching data over a plurality of network-coupled processing devices. The package includes: a header identifying the data package and containing information on content in the data package; transaction objects operable to effect a change to user data; and object operation instructions. The transaction objects can be binary or structured data. A set of data packages can contain all changes to a set of user-specific devices within the transactions contained therein.
In a further aspect, the invention comprises code for instructing a software agent to alter data in a data structure, comprising a code header including information on the code, at least one data object including content data from a user data store, and a transaction object including instructions for operations on the at least one data object.
In yet another aspect, a structured transaction data package comprises a data package identifier, a listing of fields addressed in the transaction, and at least one operation associated with an item and a field.
In a still further aspect, a plurality of transactions stored on a server and associated with a user, comprises a first subset of transactions comprising binary data, and a second subset of transactions comprising a header, an infolist and a transaction list.